home *** CD-ROM | disk | FTP | other *** search
/ SGI Varsity Update 1998 August / SGI Varsity Update 1998 August.iso / docs6.4 / relnotes / patchSG0002420 / ch1.z / ch1
Text File  |  1998-07-29  |  10KB  |  331 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        1.  _P_a_t_c_h__S_G_0_0_0_2_4_2_0__R_e_l_e_a_s_e__N_o_t_e
  9.  
  10.        This release note describes patch SG0002420 to IRIX 6.2, 6.3
  11.        and 6.4.
  12.  
  13.        Patch SG0002420 addresses flaws in earlier releases of POSIX
  14.        threads (pthreads) IEEE 1003.1c-1995 Standard.
  15.  
  16.        This patch SHOULD NOT be installed unless the POSIX Patch
  17.        Set and the rld patch 1932 OR LATER is also installed.
  18.  
  19.        1.1  _S_u_p_p_o_r_t_e_d__H_a_r_d_w_a_r_e__P_l_a_t_f_o_r_m_s
  20.  
  21.        All platforms running IRIX 6.2, 6.2pacecar, 6.3-O2-10K and
  22.        6.4.
  23.  
  24.        1.2  _S_u_p_p_o_r_t_e_d__S_o_f_t_w_a_r_e__P_l_a_t_f_o_r_m_s
  25.  
  26.        Patch SG0002420 may be installed on IRIX 6.2, 6.3 and 6.4
  27.        systems configured with the POSIX Patch Set and rld patch
  28.        number 1932 OR LATER.  This patch replaces patches 1361,
  29.        1405, 1644, 1941, 2040, 2041 2161, 2162, 2254.
  30.  
  31.  
  32.        1.3  _B_u_g_s__F_i_x_e_d__b_y__P_a_t_c_h__S_G_0_0_0_2_4_2_0
  33.  
  34.        This patch contains fixes for the following bugs in IRIX
  35.        6.2, 6.2pacecar, 6.3-O2-10K and 6.4.  Bug numbers from
  36.        Silicon Graphics bug tracking system are included for
  37.        reference.
  38.  
  39.           +o Bug 533294: Avoid symbol preemption of calloc()
  40.  
  41.           +o Bug 526820: fork() child identity cleanup
  42.  
  43.           +o Bug 525427: cancellation/signals deadlock
  44.  
  45.           +o Bug 523500: fork()/wait() synchronisation
  46.  
  47.           +o Bug 481944: sigsuspend() race
  48.  
  49.                +o Patches fixed in 2254:
  50.                  Bug 498816: exceptions do not generate core dumps
  51.                  Bug 498470: vp starvation under stress
  52.                  Bug 491107: no more than 1024 pthreads allowed
  53.  
  54.           +o Additional (roll-up bug numbers):  485218, 482660,
  55.             482530, 479337, 471918, 468984, 460998, 459551, 445235,
  56.             439648, 439638, 436647, 412725, 360218, 327458.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.        1.4  _S_u_b_s_y_s_t_e_m_s__I_n_c_l_u_d_e_d__i_n__P_a_t_c_h__S_G_0_0_0_2_4_2_0
  75.  
  76.        This patch release includes these subsystems:
  77.  
  78.           +o patchSG0002420.eoe_hdr.lib - pthreads header file
  79.             (pthread.h).
  80.  
  81.           +o patchSG0002420.eoe_sw.irix_lib - pthreads libraries
  82.             (o32 and n32 versions).
  83.  
  84.           +o patchSG0002420.eoe_sw64.lib - pthreads library (n64
  85.             version).
  86.  
  87.           +o patchSG0002420.eoe_man.unix - pthreads-related man
  88.             pages.
  89.  
  90.        1.5  _G_e_n_e_r_a_l__N_o_t_e_s
  91.  
  92.           +o Pthread concurrency: by default the pthreads run-time
  93.             adjusts the number of kernel execution contexts
  94.             dynamically according to application behaviour.  To
  95.             provide more control over this scheduling two new
  96.             interfaces are provided:
  97.  
  98.                - int pthread_setconcurrency(int degree) requests
  99.                  that the system set the number of execution
  100.                  entities to degree; this is only a hint.  A degree
  101.                  of value 0 returns scheduling to the default mode.
  102.  
  103.                - int pthread_getconcurrency(void) returns the
  104.                  current hint or zero if the default mode is in
  105.                  action.
  106.  
  107.           +o Pthread limits: the default limit on the number of
  108.             pthreads is 1024.  This limit may be raised using a new
  109.             rlimit resource RLIMIT_PTHREAD.  The getrlimit(2) and
  110.             setrlimit(2) interfaces may be used to query and change
  111.             the limit.  The current soft limit is 1024 and the hard
  112.             limit 10240.  At this time the API is a library
  113.             construct; shells, systune and inheritance properties
  114.             are not supported.
  115.  
  116.             In future releases the (default) hard limit will be
  117.             lowered but will be tunable with systune.  Shells and
  118.             inheritance will also be fixed.
  119.  
  120.           +o Core dumps: as a debugging aid, setting the environment
  121.             variable "PT_CORE" will cause the library to act on
  122.             exceptions encountered in the library code.  The
  123.             purpose is solely to permit generation of a core dump
  124.             and no other behaviour should be attempted.
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.           +o Run-time loader dependency: if this patch is installed
  141.             without the correct rld patch then pthread applications
  142.             will fail at load time with the following message:
  143.  
  144.             rld: Fatal Error: _rld_new_interface: bad operation: 12
  145.  
  146.           +o Pthread library load address: problems have been
  147.             observed regarding the address chosen to load the
  148.             pthread library.  This can manifest itself as a memory
  149.             allocation failure for large allocations (typically
  150.             greater than 800Mb).  A workaround for this problem is
  151.             to modify the so_locations files prior to installing
  152.             the patch as follows:
  153.  
  154.                - locate the SGI DSO range, for example:
  155.                  $range 0x02000000, 0x08000000:\
  156.  
  157.                - find the libpthread entry:
  158.                  libpthread.so \
  159.                   :st = .text ...
  160.                   :st = .data ...
  161.  
  162.                - replace the .text and .data lines with the range:
  163.                  libpthread.so \
  164.                   $range 0x02000000, 0x08000000:\
  165.  
  166.                - install the patch as usual
  167.             The address used to load the library can be found using
  168.             elfdump with the -L argument to retrieve the BASEADDR
  169.             value.
  170.  
  171.           +o 6.2 Supplementary documentation:  A postscript file
  172.             containing an updated version of chapter 3 of _T_o_p_i_c_s _i_n
  173.             _I_R_I_X _P_r_o_g_r_a_m_m_i_n_g describes the POSIX threads model in
  174.             more detail.  It can be found in
  175.             /usr/relnotes/patchSG0002420/ch3.parallel.ps.
  176.  
  177.           +o Debugging:  WorkShop 2.6.2 and dbx 7.0 are pthread-
  178.             aware.
  179.  
  180.           +o Performance tools:  SpeedShop patch number 1809 OR
  181.             HIGHER is recommended for pthreads.
  182.  
  183.           +o Sprocs:  Sprocs use a fundamentally different
  184.             programming model and as such do not interact well with
  185.             pthreads.  Rather than have ill-defined semantics, a
  186.             pthreads program does not support the sproc(),
  187.             sprocsp() calls or the arena synchronisation primitives
  188.             usconfig(3P).
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.           +o Dynamic loading: loading the libpthread DSO or loading
  207.             a DSO depending on libpthread into to application which
  208.             is not linked with the pthread library is unstable.
  209.             Symbols that libpthread preempts are not (by default)
  210.             re-evaluated following the dynamic load and may
  211.             therefore be incorrect.
  212.  
  213.  
  214.        1.6  _I_n_s_t_a_l_l_a_t_i_o_n__I_n_s_t_r_u_c_t_i_o_n_s
  215.  
  216.        Patch software is installed like any other Silicon Graphics
  217.        software product.  Follow the instructions in your _S_o_f_t_w_a_r_e
  218.        _I_n_s_t_a_l_l_a_t_i_o_n _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e to bring up the miniroot
  219.        form of the software installation tools.
  220.  
  221.        Note that by default, patch software is not installed and
  222.        must be explicitly selected.
  223.  
  224.        Follow these steps to select a patch for installation:
  225.  
  226.          1.  At the Inst> prompt, type
  227.  
  228.              iiiinnnnssssttttaaaallllllll ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
  229.  
  230.              where _x_x_x_x_x_x_x is the patch number.
  231.  
  232.          2.  Initiate the installation sequence. Type
  233.  
  234.              IIIInnnnsssstttt>>>> ggggoooo
  235.  
  236.          3.  You may find that two patches have been marked as
  237.              incompatible.  (The installation tools reject an
  238.              installation request if an incompatibility is
  239.              detected.)  If this occurs, you must deselect one of
  240.              the patches.
  241.  
  242.              IIIInnnnsssstttt>>>> kkkkeeeeeeeepppp ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
  243.  
  244.              where _x_x_x_x_x_x_x is the patch number.
  245.  
  246.          4.  After completing the installation process, exit the
  247.              _i_n_s_t program by typing
  248.  
  249.              IIIInnnnsssstttt>>>> qqqquuuuiiiitttt
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.        1.7  _P_a_t_c_h__R_e_m_o_v_a_l__I_n_s_t_r_u_c_t_i_o_n_s
  273.  
  274.        To remove a patch, use the _v_e_r_s_i_o_n_s _r_e_m_o_v_e command as you
  275.        would for any other software subsystem.  The removal process
  276.        reinstates the original version of software unless you have
  277.        specifically removed the patch history from your system.
  278.  
  279.        vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeee ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
  280.  
  281.        where _x_x_x_x_x_x_x is the patch number.
  282.  
  283.        To keep a patch but increase your disk space, use the
  284.        _v_e_r_s_i_o_n_s _r_e_m_o_v_e_h_i_s_t command to remove the patch history.
  285.  
  286.        vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeeehhhhiiiisssstttt ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
  287.  
  288.        where _x_x_x_x_x_x_x is the patch number.
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.